/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.clinicariobamba.ReglasNegocio.Funciones;

import com.clinicariobamba.Accesodatos.Conexion;
import com.clinicariobamba.ReglasNegocio.Clases.HistoriaClinica;
import com.clinicariobamba.ReglasNegocio.Clases.Paciente;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;

/**
 *
 * @author Gis
 */
public class FuncionesHistoriaClinica {

    public static ArrayList<HistoriaClinica> obtenerHistoriaClinicas() {
        return null;
    }

    public static HistoriaClinica obtenerHistoriaClinica(int id) {
        try {
            HistoriaClinica model = null;
            Conexion con = new Conexion();
            String sql = "select h.id_hc, \n"
                    + "	h.id_paciente,\n"
                    + "    p.ci,\n"
                    + "    p.nombres,\n"
                    + "    p.apellidos,\n"
                    + "    p.sexo,\n"
                    + "    p.fecha_nac,\n"
                    + "    p.estado_civil,\n"
                    + "    p.etnia,\n"
                    + "    p.religion,\n"
                    + "    p.lateralidad,\n"
                    + "    p.lugar_nacimiento,\n"
                    + "    p.lugar_residencia,\n"
                    + "    p.direccion,\n"
                    + "    p.telefono,\n"
                    + "    p.profesion,\n"
                    + "    p.contrasena,\n"
                    + "    p.estado\n"
                    + "from historia_clinica as h "
                    + "inner join paciente as p on h.id_paciente = p.id_p"
                    + " where h.id_paciente = ?";
            PreparedStatement pStm = con.crearPrepareStm(sql);
            pStm.setInt(1, id);
            ResultSet rs = con.ejecutarPrepareStm(pStm);

            while (rs.next()) {
                model = new HistoriaClinica(rs.getInt(1)
                        , new Paciente(rs.getInt(2)
                                ,rs.getString(3)
                                , rs.getString(4)
                                , rs.getString(5)
                                , rs.getString(6)
                                , rs.getString(7)
                                , FuncionesEstadoCivil.obtenerEstadoCivil(rs.getInt(8)) 
                                , FuncionesEtnia.obtenerEtnia(rs.getInt(9))
                                , rs.getString(10)
                                , rs.getString(11)
                                , rs.getString(12)
                                , rs.getString(13)
                                , rs.getString(14)
                                , rs.getString(15)
                                , rs.getString(16)
                                , rs.getString(17)
                                , rs.getBoolean(18)));                
            }
            con.desconectar();
            if (model != null)            
                return model;
            else 
                return new HistoriaClinica();

        } catch (Exception ex) {
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                    "Error en la conexion a la base de datos", ex.getMessage());
            FacesContext.getCurrentInstance().addMessage(null, message);
            return new HistoriaClinica();
        }
    }

    public static boolean insertar(HistoriaClinica hce) throws Exception {
       boolean resultado;
        resultado = false;
        try {
            String sql = String.format("SELECT `clinica riobamba`.`insertar_historia_clinica`(%d)", hce.getPaciente().getId_p());
            Conexion c = new Conexion();
            ResultSet rs = c.ejecutarQuery(sql);
//            rs.next();
//            resultado = rs.getBoolean(1);
            while (rs.next()) {
                hce.setIdHc(rs.getInt(1));
                resultado = true;
            }            
            c.desconectar();
        } catch (Exception ex) {
            throw ex;

        }
        return resultado;

    }

}
